package ig.metrica.ui.unidadsubcuenta;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Properties;
import java.util.StringTokenizer;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;

import ig.metrica.origenesdedatos.Conexion;
import ig.metrica.origenesdedatos.ConexionHome;
import ig.metrica.origenesdedatos.FormatoHome;
import ig.metrica.origenesdedatos.FormatounidadsubcuentaBMP;
import ig.metrica.origenesdedatos.FormatounidadsubcuentaBMPHome;
import ig.metrica.origenesdedatos.FormatounidadsubcuentaBMPPK;
import ig.metrica.ui.ModeloTablaBusquedaSevinpro;
import ig.metrica.ui.PantallaBusquedaSevinproPanel;
import ig.metrica.ui.WizzardSevinproPanel;
import ig.util.ConexionServer;
import ig.util.ejb.IGBean;
import ig.util.ejb.IGLlaveInt;

public class PantallaBusquedaUnidad extends PantallaBusquedaSevinproPanel {

	private PantallaDatosBasicosUnidad panel;
	private WizzardSevinproPanel wizzard;
	private Object[] llaveVO = new Object[1];
	private String[] titulos;
	private ArrayList datos;
	private FormatounidadsubcuentaBMPHome home;
	private InitialContext ctx = null;
	private Properties prop = new Properties(); 
	{
		prop.put(Context.INITIAL_CONTEXT_FACTORY, IGBean.INITIAL_CONTEXT_FACTORY );
		String Sockec = new ConexionServer().getSocketServer(); 
		prop.put( Context.PROVIDER_URL, Sockec);
		try {
			ctx = new InitialContext(prop);
			home = (FormatounidadsubcuentaBMPHome)ctx.lookup("ig.metrica.origenesdedatos.FormatounidadsubcuentaBMP");
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "Error tratando de Ubicar Servicio");
		}
	}
	
	public PantallaBusquedaUnidad( PantallaDatosBasicosUnidad panel, WizzardSevinproPanel wizzard ){
		super(panel, wizzard, new ModeloTablaResultadoBusquedaUnidad(new String[] {"Id-Formato", "Unidad de Captura", "Subcuenta", "Descripcion"}, new ArrayList()) );
		this.wizzard = wizzard;
		this.panel = panel;			
		this.datos = new ArrayList();
		((ModeloTablaResultadoBusquedaUnidad)tabla.getModel()).setDatos( datos );		
	}
	
	protected final void accionSeleccionar(){
		int fila = tabla.getSelectedRow();
		if (fila!=-1){
			Object[] registro = (Object[])datos.get(fila);
			try {
				llaveVO[0] = new FormatounidadsubcuentaBMPPK(Integer.parseInt(registro[0].toString()),registro[1].toString(),registro[2].toString());
				wizzard.setKey(llaveVO);
			} catch (Exception e) {
				JOptionPane.showMessageDialog(null,"Error!\n"+e.getMessage());
			}
                        try {
                            ((JInternalFrame)this.getParent().getParent().getParent().getParent()).dispose();    
                        } catch (Exception e) {
                            this.getParent().getParent().getParent().getParent().setVisible(false);    
                        }
			
		}else{
			//JOptionPane.showInternalMessageDialog( this, "Debe escoger un registro de la tabla." );                    
                        JOptionPane.showMessageDialog( this,"Debe escoger un registro de la tabla.","Mensaje",JOptionPane.OK_CANCEL_OPTION);
                }
	}
	
	protected void accionBuscar(){
		
		datos = new ArrayList();
		
		try {

			StringTokenizer mCod = new StringTokenizer(panel.getFormato().trim(),"-");
			int mIdFormato = Integer.parseInt(mCod.nextToken());
			Collection resultado = home.findByPropiedades( mIdFormato,panel.getUnidad(), panel.getSubcuenta(), panel.getDescripcion());
			
			Iterator i = resultado.iterator();
			
			//String a=new String(null);
			
			while (i.hasNext()){
				FormatounidadsubcuentaBMP conexion = (FormatounidadsubcuentaBMP)i.next();
				Object[] registro = new Object[4];
				registro[0] = conexion.getIdformato();
				registro[1] = conexion.getUnidaddecaptura().toString();
				registro[2] = new String( conexion.getSubcuenta() );
				if(conexion.getDescripcion()!=null) registro[3] = new String( conexion.getDescripcion() );
				datos.add( registro );
			}
		} catch (Exception e) {                
                        JOptionPane.showMessageDialog( this,"Error:"+ e.toString(),"Mensaje",JOptionPane.OK_CANCEL_OPTION );                    
			//JOptionPane.showInternalMessageDialog( this,"Error: \n"+e.toString() );
		}
		
		((ModeloTablaResultadoBusquedaUnidad)tabla.getModel()).setDatos( datos );
		//((AbstractTableModel)tabla.getModel()).fireTableDataChanged();
	
	}

}


